const express = require("express")

// 创建app
const app = express();


var bodyParser = require("body-parser")
app.use(bodyParser.json()) // 解析json
app.use(bodyParser.urlencoded({ extended: false })) // 是否格式化表单


// const cors = require('cors') // 跨域请求

// 解析token
const expressJWT = require('express-jwt')
// 配置文件
const config = require('./config')


// app组件创建
// ===== 全局默认所需配置====== 跨域+数据格式化+其他全局中间件
// 全局组件
// app.use(cors())

// 中间件挂载
app.use(function (req, res, next) {
  // status = 0 为成功； status = 1 为失败； 默认将 status 的值设置为 1，方便处理失败的情况
  res.cc = function (err, status = 400) {
    res.send({
      // 状态
      meta: {
        status,
        // 状态描述，判断 err 是 错误对象 还是 字符串
        message: err instanceof Error ? err.message : err,
      },
    })
  }
  res.ok = function (data, message = '获取数据成功', status = 200) {
    res.send({
      // 状态
      meta: {
        data, message, status
      }
    })
  }
  next()
})
app.use(expressJWT.expressjwt({ secret: config.jwtSecretKey, algorithms: ['HS256'] }).unless({ path: [/^\/api\//] }))

app.use((req, res, next) => {
  // console.log(req);
  next()
})

// 路由挂载
// app.get("/",(req,res)=>{
//     res.send("ok")
// })
//处理静态目录,访问静态文件
// 路由
const userRouter = require("./src/routes/user.js")
const testRouter = require("./src/routes/userList.js")
const classRouter = require("./src/routes/class.js")
const courseRouter = require("./src/routes/course.js")
const studentRouter = require("./src/routes/student.js")
const scoreRouter = require("./src/routes/score.js")
const parentsRouter = require("./src/routes/parents.js")


app.use("/api", userRouter)
app.use("/user", testRouter)
app.use("/class", classRouter)
app.use("/course", courseRouter)
app.use("/student", studentRouter)
app.use("/score", scoreRouter)
app.use("/parent", parentsRouter)


app.use('/static', express.static('static'));


// 资源不存在(写在所有路由的最后)
app.get('*', (req, res, next) => {
  res.json({
    meta: {
      status: 404,
      msg: '所请求的资源不存在或不可用',
    },
    data: null,
  });
});
app.listen(3000, () => {
  console.log("启动成功  http://localhost:3000");
})